home *** CD-ROM | disk | FTP | other *** search
/ Aminet 22 / Aminet 22 (1997)(GTI - Schatztruhe)[!][Dec 1997].iso / Aminet / dev / amos / amos_col.lha / AMOS-COL / Interface.amos / Interface.amosSourceCode
AMOS Source Code  |  1980-01-10  |  19KB  |  672 lines

  1. 'NEW INTERFACE  (WORKBENCH IN AMOS)
  2. 'CREATED BY DELTA/OPIUM^HV^FNZ 
  3. '�UKASZ ï¿½ELEZNY
  4. 'Ul. W�oska 4d/6 
  5. '42-600 Tarnowskie G�ry
  6. 'Poland
  7. '
  8. 'This isn't finished version (this is only small previrew) 
  9.  
  10.  
  11. Set Buffer 100
  12. Dim OKNO$(20,6),GADGET$(20,20,6),GAD_OSTATNI(20),�LE$(100)
  13. Global OKNO$(),GADGET$(),GAD_OSTATNI(),�LE$(),AKTYWNE_OKNO,KOLOR,PI�RO,PAPIER,ILE_OKIEN
  14. �LE$(1)="Okno zosta�o wcze�niej zamkni�te."
  15. �LE$(2)="Okna o tym numerze jeszcze nie otwarto."
  16. �LE$(3)="Okna nie mo�na otworzy�."
  17. �LE$(4)="Okno zbyt du�e/zbyt ma�e."
  18. �LE$(5)="Brak tre�ci dla opisania gadgetu."
  19. �LE$(6)="Gadget zbyt du�y/zbyt ma�y."
  20. INICJUJ_ZMIENNE
  21. INICJUJ_EKRAN
  22. Do 
  23.    If Mouse Click=1
  24.       SPRAWD�_MYSZ[X Screen(X Mouse),Y Screen(Y Mouse)]
  25.    End If 
  26. Loop 
  27. Procedure INICJUJ_ZMIENNE
  28.    AKTYWNE_OKNO=0
  29.    ILE_OKIEN=0
  30.    KOLOR=1
  31.    PAPIER=0
  32.    PI�RO=2
  33.    Track Loop On 
  34. End Proc
  35. Procedure INICJUJ_EKRAN
  36.    
  37.    
  38.    Screen Open 0,640,256,16,Hires
  39.    Curs Off : Flash Off : Cls 0
  40.    Palette $AAA,$FFF,$0,$68B,$AAA,$0 : Colour Back Colour(0)
  41.    Colour 10,$FFF
  42.    Colour 11,$888
  43.    Colour 13,$FFF
  44.    Screen Display 0,,44,,
  45.    
  46.    Limit Mouse 128,44 To 447,299
  47.    
  48.    
  49.    
  50.    OTW�RZ_OKNO["0","0","639","200","0","1","1 Delta's Interface!"]
  51.    
  52.    
  53.    GADGET["8","180","1","Autor","5","0","1"]
  54.    GADGET["100","180","1"," Info ","5","0","0"]
  55.    GADGET["200","180","1","Muzyka","5","0","0"]
  56.    GADGET["300","180","1","Wyj�cie","5","0","0"]
  57.    
  58.    OTW�RZ_OKNO["20","11","639","200","1","1","2 To je ju� drugie"]
  59.    
  60.    
  61.    GADGET["48","130","1","Afdsajhlkfdsalkjhfdsalkjhfdsalkjhfdsalkjhfdsalkjhfdsaala ma kot a kot ma aids","5","0","0"]
  62.    GADGET["140","110","1","B","5","0","1"]
  63.    GADGET["240","110","1","C","5","0","0"]
  64.    GADGET["340","110","1","D","5","0","0"]
  65.    
  66.    OTW�RZ_OKNO["100","22","399","100","1","1","3 A sdsdsto jest trzecie"]
  67.    
  68.    
  69.    GADGET["108","70","1","A�jkjdsdsfdsfsljfhldsalewaiukj,12987iwala","5","0","0"]
  70.    GADGET["200","50","1","2","5","0","0"]
  71.    GADGET["290","50","1","3","5","0","1"]
  72.  
  73.    'REQUESTER["Przyk�ad","To jest|tres�|tego|requestra","Opcja1|Opcja2|Opcja3"] 
  74.    
  75. End Proc
  76. Procedure RYSUJ_OKNO[XS,YS,XE,YE,T,A,TYTU�$]
  77.    
  78.    Ink 0
  79.    Bar XS,YS To XE,YE
  80.    
  81.    If A=1
  82.       Ink 3
  83.       Bar XS+1,YS+1 To XE-1,YS+9
  84.       Bar XE-16,YS+11 To XE-1,YE-1
  85.       Polyline XS+2,YS+11 To XS+2,YE-1
  86.    End If 
  87.    
  88.    Ink 1
  89.    Polyline XS,YE To XS,YS To XE,YS
  90.    Polyline XE-17,YS+11 To XE-17,YE-1
  91.    Polyline XS+1,YE-1 To XE-17,YE-1
  92.  
  93.    
  94.    Ink 2
  95.    Polyline XE,YS To XE,YE
  96.    Polyline XS+3,YS+10 To XE-1,YS+10
  97.    Polyline XS+3,YS+11 To XS+3,YE
  98.    Polyline XS+1,YE To XE,YE
  99.    
  100.    If T=1
  101.       TYTU�$="   "+TYTU�$
  102.       PP=Len(TYTU�$)
  103.       If PP>(((XE-50)-XS)/8)
  104.          PP=(((XE-50)-XS)/8)
  105.       End If 
  106.       Ink 2,3 : Text XS+4,YS+7,Left$(TYTU�$,PP)
  107.       _CLOSE_GADGET[XS,YS,XE,YE]
  108.    Else 
  109.       PP=Len(TYTU�$)
  110.       If PP>(((XE-50)-XS)/9)
  111.          PP=(((XE-50)-XS)/9)
  112.       End If 
  113.       Ink 2,3 : Text XS+4,YS+7,Left$(TYTU�$,PP)
  114.    End If 
  115.    
  116.    
  117.    
  118.    If T=1
  119.       Ink 1
  120.       Polyline XE-16,YE-9 To XE-1,YE-9
  121.       Polyline XE-22,YS To XE-22,YS+9
  122.       Polyline XE-45,YS To XE-45,YS+9
  123.       Ink 2
  124.       Polyline XE-23,YS+1 To XE-23,YS+9
  125.       Polyline XE-46,YS+1 To XE-46,YS+9
  126.       SIZE_GADGET[XS,YS,XE,YE]
  127.       DEPTH_GADGET[XS,YS,XE,YE]
  128.       SIZE_REFRESH_GADGET[XS,YS,XE,YE]
  129.    End If 
  130.    
  131. End Proc
  132. Procedure PAMI�TAJ_EKRAN_POD_OKNEM[NR,X1,Y1,X2,Y2]
  133.    X=X1 and $FFFFFFF0
  134.    XX=Min(Screen Width,(X2+16) and $FFFFFFF0)
  135.    Get Block NR,X,Y1,XX-X,Y2-Y1+1
  136. End Proc
  137. Procedure SIZE_GADGET[XS,YS,XE,YE]
  138.    Ink 1 : Polygon XE-13,YE-2 To XE-3,YE-2 To XE-3,YE-7 To XE-4,YE-7 To XE-13,YE-3
  139.    Ink 2 : Polyline XE-13,YE-2 To XE-3,YE-2 To XE-3,YE-7 To XE-4,YE-7 To XE-13,YE-3
  140. End Proc
  141. Procedure DEPTH_GADGET[XS,YS,XE,YE]
  142.    Ink 0 : Bar XE-18,YS+2 To XE-8,YS+6
  143.    Ink 2 : Box XE-18,YS+2 To XE-8,YS+6
  144.    Ink 1 : Bar XE-14,YS+4 To XE-4,YS+8
  145.    Ink 2 : Box XE-14,YS+4 To XE-4,YS+8
  146. End Proc
  147. Procedure SIZE_REFRESH_GADGET[XS,YS,XE,YE]
  148.  Ink 1 : Bar XE-40,YS+2 To XE-35,YS+5
  149.  Ink 2 : Box XE-40,YS+2 To XE-28,YS+8
  150.  Ink 2 : Box XE-40,YS+2 To XE-35,YS+5
  151. End Proc
  152. Procedure _CLOSE_GADGET[XS,YS,XE,YE]
  153.    Ink 2 : Bar XS+7,YS+3 To XS+11,YS+7
  154.            Draw XS+18,YS+1 To XS+18,YS+9
  155.    Ink 1 : Bar XS+8,YS+4 To XS+10,YS+6
  156.            Draw XS+19,YS+1 To XS+19,YS+9
  157. End Proc
  158. Procedure _ERROR[W]
  159.    Paper 0 : Pen 2
  160.    Print ï¿½LE$(W)
  161.    Wait Key 
  162.    End 
  163. End Proc
  164. Procedure REFRESH_GADGET[XS$,YS$,TYP$,T$,K1$,K2$,R$]
  165.    
  166.    XS=Val(XS$)
  167.    YS=Val(YS$)
  168.    T=Val(TYP$)
  169.    K1=Val(K1$)
  170.    K2=Val(K2$)
  171.    R=Val(R$)
  172.  
  173.    If T$=""
  174.       _ERROR[5]
  175.    End If 
  176.    XE=XS+(Len(T$)*8)+10
  177.  
  178.    
  179.    YE=YS+12
  180.    Ink 4 : Bar XS,YS To XE,YE
  181.    Ink 2 : Box XS,YS To XE,YE
  182.    Ink 1 : Polyline XS,YE To XS,YS To XE,YS
  183.    Gr Writing 0 : Ink K1,K2 : Text XS+6,YE-4,T$
  184.    If T=1
  185.       Ink 2 : Box XS-1,YS-1 To XE+1,YE+1
  186.    End If 
  187.    If T=2
  188.       Ink 2 : Box XS-1,YS-1 To XE+1,YE+1
  189.       Ink 2 : Box XS+1,YS+1 To XE-1,YE-1
  190.       Ink 1 : Polyline XS+1,YE-1 To XS+1,YS+1 To XE-1,YS+1
  191.    End If 
  192.    If T=3
  193.       Ink 2 : Box XS-2,YS-2 To XE+2,YE+2
  194.       Ink 2 : Box XS+1,YS+1 To XE-1,YE-1
  195.       Ink 1 : Polyline XS+1,YE-1 To XS+1,YS+1 To XE-1,YS+1
  196.    End If 
  197.    If T=4
  198.       Ink 2 : Box XS-1,YS-1 To XE+1,YE+1
  199.       Set Line %10101010101010101010
  200.       Ink 2,0 : Box XS+3,YS+2 To XE-3,YE-1
  201.       Set Line %111111111111111111111
  202.    End If 
  203.    
  204.    If R=1
  205.       Gr Writing 2
  206.       Bar XS,YS To XE,YE
  207.       Gr Writing 0
  208.    End If 
  209.    
  210. End Proc
  211. Procedure OKNA_NIE_MO�NA_NARYSOWA�
  212.    _ERROR[3]
  213. End Proc
  214. Procedure SPRAWD�_MYSZ[XM,YM]
  215.    
  216.    ST=AKTYWNE_OKNO
  217.    
  218.    For AKTYWNE_OKNO=ILE_OKIEN To 1 Step -1
  219.       If OKNO$(AKTYWNE_OKNO,6)<>Chr$(255)
  220.          For B=1 To GAD_OSTATNI(AKTYWNE_OKNO)
  221.             XE=Val(GADGET$(AKTYWNE_OKNO,B,0))+(Len(GADGET$(AKTYWNE_OKNO,B,3))*8)+10
  222.             YE=Val(GADGET$(AKTYWNE_OKNO,B,1))+12
  223.             If XM>Val(GADGET$(AKTYWNE_OKNO,B,0)) and YM>Val(GADGET$(AKTYWNE_OKNO,B,1)) and XM<XE and YM<YE
  224.                If Point(XM,YM)=5 or Point(XM,YM)=4 or Point(XM,YM)=11 or Point(XM,YM)=10
  225.                   UGNIJ[Val(GADGET$(AKTYWNE_OKNO,B,0)),Val(GADGET$(AKTYWNE_OKNO,B,1)),XE,YE]
  226.                   Pop Proc[Param]
  227.                End If 
  228.             End If 
  229.          Next 
  230.       End If 
  231.    Next 
  232.    
  233.    For AKTYWNE_OKNO=ILE_OKIEN To 1 Step -1
  234.       
  235.       If OKNO$(J,6)<>Chr$(255)
  236.          
  237.          If XM>Val(OKNO$(AKTYWNE_OKNO,0)) and YM>Val(OKNO$(AKTYWNE_OKNO,1))-1 and XM<Val(OKNO$(AKTYWNE_OKNO,0))+19 and YM<Val(OKNO$(AKTYWNE_OKNO,1))+10 and Val(OKNO$(AKTYWNE_OKNO,4))=1
  238.             UGNIJ_CLOSE_GADGET[Val(OKNO$(AKTYWNE_OKNO,0)),Val(OKNO$(AKTYWNE_OKNO,1)),Val(OKNO$(AKTYWNE_OKNO,0))+19,Val(OKNO$(AKTYWNE_OKNO,1))+10]
  239.             
  240.             
  241.             If Param
  242.                ZAMKNIJ_OKNO[AKTYWNE_OKNO]
  243.                Pop Proc
  244.             End If 
  245.          End If 
  246.          
  247.          
  248.          If XM>Val(OKNO$(AKTYWNE_OKNO,0))+19 and YM>Val(OKNO$(AKTYWNE_OKNO,1))-1 and XM<Val(OKNO$(AKTYWNE_OKNO,2))-46 and YM<Val(OKNO$(AKTYWNE_OKNO,1))+10 and Point(X Screen(X Mouse),Y Screen(Y Mouse))>0
  249.             
  250.             POZX=XM
  251.             POZY=YM
  252.             Gr Writing 2
  253.             
  254.             POZYCJAX=0
  255.             POZYCJAY=0
  256.             
  257.             NEWXX=XM : NEWYY=YM
  258.             
  259.             Box POZYCJAX+Val(OKNO$(AKTYWNE_OKNO,0)),POZYCJAY+Val(OKNO$(AKTYWNE_OKNO,1)) To POZYCJAX+Val(OKNO$(AKTYWNE_OKNO,2)),POZYCJAY+Val(OKNO$(AKTYWNE_OKNO,3))
  260.             
  261.             Repeat 
  262.                XX=X Screen(X Mouse) : YY=Y Screen(Y Mouse)
  263.                
  264.                SPOZYCJAX=XX-POZX
  265.                SPOZYCJAY=YY-POZY
  266.                
  267.                SPR:
  268.                If POZYCJAX+Val(OKNO$(AKTYWNE_OKNO,0))<0
  269.                   POZYCJAX=POZYCJAX+2
  270.                   Goto SPR
  271.                End If 
  272.                If POZYCJAY+Val(OKNO$(AKTYWNE_OKNO,1))<0
  273.                   POZYCJAY=POZYCJAY+2
  274.                   Goto SPR
  275.                End If 
  276.                If POZYCJAX+Val(OKNO$(AKTYWNE_OKNO,2))+1>Screen Width
  277.                   POZYCJAX=POZYCJAX-2
  278.                   Goto SPR
  279.                End If 
  280.                If POZYCJAY+Val(OKNO$(AKTYWNE_OKNO,3))+1>Screen Height
  281.                   POZYCJAY=POZYCJAY-2
  282.                   Goto SPR
  283.                End If 
  284.                
  285.                
  286.                
  287.                Box POZYCJAX+Val(OKNO$(AKTYWNE_OKNO,0)),POZYCJAY+Val(OKNO$(AKTYWNE_OKNO,1)) To POZYCJAX+Val(OKNO$(AKTYWNE_OKNO,2)),POZYCJAY+Val(OKNO$(AKTYWNE_OKNO,3))
  288.                
  289.                POZYCJAX=NEWXX-POZX
  290.                POZYCJAY=NEWYY-POZY
  291.                
  292.                
  293.                SPR2:
  294.                If POZYCJAX+Val(OKNO$(AKTYWNE_OKNO,0))<0
  295.                   POZYCJAX=POZYCJAX+2
  296.                   Goto SPR2
  297.                End If 
  298.                If POZYCJAY+Val(OKNO$(AKTYWNE_OKNO,1))<0
  299.                   POZYCJAY=POZYCJAY+2
  300.                   Goto SPR2
  301.                End If 
  302.                If POZYCJAX+Val(OKNO$(AKTYWNE_OKNO,2))+1>Screen Width
  303.                   POZYCJAX=POZYCJAX-2
  304.                   Goto SPR2
  305.                End If 
  306.                If POZYCJAY+Val(OKNO$(AKTYWNE_OKNO,3))+1>Screen Height
  307.                   POZYCJAY=POZYCJAY-2
  308.                   Goto SPR2
  309.                End If 
  310.                
  311.                Box POZYCJAX+Val(OKNO$(AKTYWNE_OKNO,0)),POZYCJAY+Val(OKNO$(AKTYWNE_OKNO,1)) To POZYCJAX+Val(OKNO$(AKTYWNE_OKNO,2)),POZYCJAY+Val(OKNO$(AKTYWNE_OKNO,3))
  312.                
  313.                NEWXX=XX : NEWYY=YY
  314.                
  315.                
  316.                Repeat 
  317.                   NEWXX=X Screen(X Mouse) : NEWYY=Y Screen(Y Mouse)
  318.                Until XX<>NEWXX or YY<>NEWYY or Mouse Key=0
  319.                
  320.                
  321.             Until Mouse Key=0
  322.             Box POZYCJAX+Val(OKNO$(AKTYWNE_OKNO,0)),POZYCJAY+Val(OKNO$(AKTYWNE_OKNO,1)) To POZYCJAX+Val(OKNO$(AKTYWNE_OKNO,2)),POZYCJAY+Val(OKNO$(AKTYWNE_OKNO,3))
  323.             Gr Writing 0
  324.             
  325.             DANA=Val(OKNO$(AKTYWNE_OKNO,0))+POZYCJAX
  326.             OKNO$(AKTYWNE_OKNO,0)=Str$(DANA)
  327.             DANA=Val(OKNO$(AKTYWNE_OKNO,1))+POZYCJAY
  328.             OKNO$(AKTYWNE_OKNO,1)=Str$(DANA)
  329.             DANA=Val(OKNO$(AKTYWNE_OKNO,2))+POZYCJAX
  330.             OKNO$(AKTYWNE_OKNO,2)=Str$(DANA)
  331.             DANA=Val(OKNO$(AKTYWNE_OKNO,3))+POZYCJAY
  332.             OKNO$(AKTYWNE_OKNO,3)=Str$(DANA)
  333.             
  334.             For G=1 To GAD_OSTATNI(AKTYWNE_OKNO)
  335.                
  336.                DANA=Val(GADGET$(AKTYWNE_OKNO,G,0))+POZYCJAX
  337.                GADGET$(AKTYWNE_OKNO,G,0)=Str$(DANA)
  338.                DANA=Val(GADGET$(AKTYWNE_OKNO,G,1))+POZYCJAY
  339.                GADGET$(AKTYWNE_OKNO,G,1)=Str$(DANA)
  340.                
  341.             Next 
  342.             
  343.             
  344.             Cls 0
  345.             
  346.             For J=1 To ILE_OKIEN
  347.                If OKNO$(J,6)<>Chr$(255)
  348.                   RYSUJ_OKNO[Val(OKNO$(J,0)),Val(OKNO$(J,1)),Val(OKNO$(J,2)),Val(OKNO$(J,3)),Val(OKNO$(J,4)),Val(OKNO$(J,5)),OKNO$(J,6)]
  349.                   For L=1 To GAD_OSTATNI(J)
  350.                      REFRESH_GADGET[GADGET$(J,L,0),GADGET$(J,L,1),GADGET$(J,L,2),GADGET$(J,L,3),GADGET$(J,L,4),GADGET$(J,L,5),GADGET$(J,L,6)]
  351.                   Next 
  352.                End If 
  353.             Next 
  354.             Pop Proc
  355.          End If 
  356.          
  357.       End If 
  358.       
  359.    Next 
  360.    
  361.    SKIP:
  362.    AKTYWNE_OKNO=ST
  363. End Proc
  364. Procedure UGNIJ[X1,Y1,X2,Y2]
  365.    
  366.    ' INK 0 - black
  367.    ' INK 3 - white
  368.    Ink 3
  369.    Gr Writing 2
  370.    Bar X1,Y1 To X2,Y2
  371.    Screen Copy Screen,X1+1,Y1+1,X2-1,Y2-1 To Screen,X1+2,Y1+2
  372.    Gr Writing 0
  373.    TAK=0
  374.    Repeat 
  375.       XM=X Screen(X Mouse) : YM=Y Screen(Y Mouse)
  376.       If XM<X1 or XM>X2 or YM<Y1 or YM>Y2
  377.          Ink 3
  378.          Gr Writing 2
  379.          Bar X1,Y1 To X2,Y2
  380.          Screen Copy Screen,X1+2,Y1+2,X2-1,Y2 To Screen,X1+1,Y1+1
  381.          Gr Writing 0
  382.          Repeat 
  383.             XM=X Screen(X Mouse) : YM=Y Screen(Y Mouse)
  384.             If Mouse Key=0
  385.                Pop Proc[0]
  386.             End If 
  387.          Until XM>X1 and XM<X2 and YM>Y1 and YM<Y2
  388.          Ink 3
  389.          Gr Writing 2
  390.          Bar X1,Y1 To X2,Y2
  391.          Screen Copy Screen,X1+1,Y1+1,X2-1,Y2-1 To Screen,X1+2,Y1+2
  392.          Gr Writing 0
  393.       End If 
  394.    Until Mouse Key=0
  395.    Wait Vbl 
  396.    Ink 3
  397.    Gr Writing 2
  398.    Bar X1,Y1 To X2,Y2
  399.    Screen Copy Screen,X1+2,Y1+2,X2-1,Y2 To Screen,X1+1,Y1+1
  400.    Gr Writing 0
  401. End Proc[1]
  402. Procedure UGNIJ_CLOSE_GADGET[X1,Y1,X2,Y2]
  403.    
  404.    ' INK 0 - black
  405.    ' INK 3 - white
  406.    
  407.    Dec X2
  408.    
  409.    XS=X1
  410.    YS=Y1
  411.    
  412.    
  413.    
  414.    Ink 2 : Bar XS+7,YS+3 To XS+11,YS+7
  415.    Draw XS+18,YS+1 To XS+18,YS+9
  416.    Ink 0 : Bar XS+8,YS+4 To XS+10,YS+6
  417.    Draw XS+19,YS+1 To XS+19,YS+9
  418.    
  419.    
  420.    Ink 2 : Polyline X1,Y2 To X1,Y1 To X2,Y1
  421.    Ink 1 : Polyline X2,Y1 To X2,Y2 To X1,Y2
  422.    
  423.    
  424.    TAK=0
  425.    
  426.    Repeat 
  427.       XM=X Screen(X Mouse) : YM=Y Screen(Y Mouse)
  428.       If XM<X1 or XM>X2 or YM<Y1 or YM>Y2
  429.          XS=X1
  430.          YS=Y1
  431.          
  432.          
  433.          Ink 2 : Bar XS+7,YS+3 To XS+11,YS+7
  434.          Draw XS+18,YS+1 To XS+18,YS+9
  435.          Ink 1 : Bar XS+8,YS+4 To XS+10,YS+6
  436.          Draw XS+19,YS+1 To XS+19,YS+9
  437.          
  438.          Ink 1 : Polyline X1,Y2 To X1,Y1 To X2,Y1
  439.          Ink 2 : Polyline X2,Y1 To X2,Y2 To X1,Y2
  440.          Ink 1 : Plot X2,Y1 : Plot X1,Y2
  441.          
  442.          
  443.          Repeat 
  444.             XM=X Screen(X Mouse) : YM=Y Screen(Y Mouse)
  445.             If Mouse Key=0
  446.                Pop Proc[0]
  447.             End If 
  448.          Until XM>X1 and XM<X2 and YM>Y1 and YM<Y2
  449.          
  450.          XS=X1
  451.          YS=Y1
  452.          
  453.          Ink 2 : Bar XS+7,YS+3 To XS+11,YS+7
  454.          Draw XS+18,YS+1 To XS+18,YS+9
  455.          Ink 0 : Bar XS+8,YS+4 To XS+10,YS+6
  456.          Draw XS+19,YS+1 To XS+19,YS+9
  457.          
  458.          
  459.          Ink 2 : Polyline X1,Y2 To X1,Y1 To X2,Y1
  460.          Ink 1 : Polyline X2,Y1 To X2,Y2 To X1,Y2
  461.          
  462.          
  463.          
  464.       End If 
  465.    Until Mouse Key=0
  466.    Wait Vbl 
  467.    
  468.    XS=X1
  469.    YS=Y1
  470.    
  471.    
  472.    Ink 2 : Bar XS+7,YS+3 To XS+11,YS+7
  473.    Draw XS+18,YS+1 To XS+18,YS+9
  474.    Ink 1 : Bar XS+8,YS+4 To XS+10,YS+6
  475.    Draw XS+19,YS+1 To XS+19,YS+9
  476.    
  477.    
  478.    Ink 1 : Polyline X1,Y2 To X1,Y1 To X2,Y1
  479.    Ink 2 : Polyline X2,Y1 To X2,Y2 To X1,Y2
  480.    Ink 1 : Plot X2,Y1 : Plot X1,Y2
  481.    
  482.    
  483. End Proc[1]
  484. Procedure PRZERYSUJ
  485.  
  486.    Cls 0
  487.    
  488.    For J=1 To ILE_OKIEN
  489.       If OKNO$(J,6)<>Chr$(255)
  490.          RYSUJ_OKNO[Val(OKNO$(J,0)),Val(OKNO$(J,1)),Val(OKNO$(J,2)),Val(OKNO$(J,3)),Val(OKNO$(J,4)),Val(OKNO$(J,5)),OKNO$(J,6)]
  491.          For L=1 To GAD_OSTATNI(J)
  492.             REFRESH_GADGET[GADGET$(J,L,0),GADGET$(J,L,1),GADGET$(J,L,2),GADGET$(J,L,3),GADGET$(J,L,4),GADGET$(J,L,5),GADGET$(J,L,6)]
  493.          Next 
  494.       End If 
  495.  
  496.    Next 
  497.  
  498. End Proc
  499. Procedure TEST
  500.    XS=0 : YS=0 : XE=639 : YE=250 : NR=0
  501.    For PPP=1 To 8
  502.       OTW�RZ_OKNO[Str$(XS),Str$(YS),Str$(XE),Str$(YE),Str$(Rnd(1)),"1","Okienko numer:"+Str$(PPP)]
  503.       XS=XS+3 : YS=YS+3 : XE=XE-3 : YE=YE-3
  504.       Inc NR
  505.       XG=XS+10 : YG=YS+10 : GA=1
  506.       For GA=GA To 20
  507.          GADGET[Str$(XG),Str$(YG),Str$(Rnd(4)),"Gad:"+Str$(GA),"5","0","0"]
  508.          XG=XG+100
  509.          If XG>400
  510.             YG=YG+40
  511.             XG=XS+10
  512.          End If 
  513.       Next 
  514.    Next 
  515. End Proc
  516. '* 
  517. Procedure OTW�RZ_OKNO[XS$,YS$,XE$,YE$,T$,A$,TYTU�$]
  518.    'przygotowanie zmiennych liczbowych (zamiana)
  519.    On Error Proc OKNA_NIE_MO�NA_NARYSOWA�
  520.    
  521.    XS=Val(XS$)
  522.    YS=Val(YS$)
  523.    XE=Val(XE$)
  524.    YE=Val(YE$)
  525.    T=Val(T$)
  526.    A=Val(A$)
  527.    
  528.    If XS<0 or XS>Screen Width or XE<0 or XE>Screen Width or YS<0 or YS>Screen Height or YE<0 or YE>Screen Height
  529.       _ERROR[4]
  530.    End If 
  531.    
  532.    Inc ILE_OKIEN
  533.    AKTYWNE_OKNO=ILE_OKIEN
  534.    
  535.    
  536.    OKNO$(AKTYWNE_OKNO,0)=XS$
  537.    OKNO$(AKTYWNE_OKNO,1)=YS$
  538.    OKNO$(AKTYWNE_OKNO,2)=XE$
  539.    OKNO$(AKTYWNE_OKNO,3)=YE$
  540.    OKNO$(AKTYWNE_OKNO,4)=T$
  541.    OKNO$(AKTYWNE_OKNO,5)=A$
  542.    OKNO$(AKTYWNE_OKNO,6)=TYTU�$
  543.    
  544.    'PAMI�TAJ_EKRAN_POD_OKNEM[ILE_OKIEN,XS,YS,XE,YE] 
  545.    RYSUJ_OKNO[XS,YS,XE,YE,T,A,TYTU�$]
  546.  
  547. End Proc
  548. Procedure GADGET[XS$,YS$,TYP$,T$,K1$,K2$,R$]
  549.    
  550.    XS=Val(XS$)
  551.    YS=Val(YS$)
  552.    T=Val(TYP$)
  553.    K1=Val(K1$)
  554.    K2=Val(K2$)
  555.    R=Val(R$)
  556.    
  557.    Inc GAD_OSTATNI(AKTYWNE_OKNO)
  558.    
  559.    GADGET$(AKTYWNE_OKNO,GAD_OSTATNI(AKTYWNE_OKNO),0)=XS$
  560.    GADGET$(AKTYWNE_OKNO,GAD_OSTATNI(AKTYWNE_OKNO),1)=YS$
  561.    GADGET$(AKTYWNE_OKNO,GAD_OSTATNI(AKTYWNE_OKNO),2)=TYP$
  562.    GADGET$(AKTYWNE_OKNO,GAD_OSTATNI(AKTYWNE_OKNO),3)=T$
  563.    GADGET$(AKTYWNE_OKNO,GAD_OSTATNI(AKTYWNE_OKNO),4)=K1$
  564.    GADGET$(AKTYWNE_OKNO,GAD_OSTATNI(AKTYWNE_OKNO),5)=K2$
  565.    GADGET$(AKTYWNE_OKNO,GAD_OSTATNI(AKTYWNE_OKNO),6)=R$
  566.    
  567.    If T$=""
  568.       _ERROR[5]
  569.    End If 
  570.    XE=XS+(Len(T$)*8)+10
  571.    
  572.    
  573.    SZER=Val(OKNO$(AKTYWNE_OKNO,2))-Val(OKNO$(AKTYWNE_OKNO,0))
  574.    
  575.    If XE-XS>SZER
  576.       T$=Left$(T$,((Val(OKNO$(AKTYWNE_OKNO,2))-20)-XS)/8)
  577.       GADGET$(AKTYWNE_OKNO,GAD_OSTATNI(AKTYWNE_OKNO),3)=T$
  578.       XE=XS+(Len(T$)*8)+10
  579.    End If 
  580.  
  581.    YE=YS+12
  582.    Ink 4 : Bar XS,YS To XE,YE
  583.    Ink 2 : Box XS,YS To XE,YE
  584.    Ink 1 : Polyline XS,YE To XS,YS To XE,YS
  585.    Gr Writing 0 : Ink K1,K2 : Text XS+6,YE-4,T$
  586.    If T=1
  587.       Ink 2 : Box XS-1,YS-1 To XE+1,YE+1
  588.    End If 
  589.    If T=2
  590.       Ink 2 : Box XS-1,YS-1 To XE+1,YE+1
  591.       Ink 2 : Box XS+1,YS+1 To XE-1,YE-1
  592.       Ink 1 : Polyline XS+1,YE-1 To XS+1,YS+1 To XE-1,YS+1
  593.    End If 
  594.    If T=3
  595.       Ink 2 : Box XS-2,YS-2 To XE+2,YE+2
  596.       Ink 2 : Box XS+1,YS+1 To XE-1,YE-1
  597.       Ink 1 : Polyline XS+1,YE-1 To XS+1,YS+1 To XE-1,YS+1
  598.    End If 
  599.    If T=4
  600.       Ink 2 : Box XS-1,YS-1 To XE+1,YE+1
  601.       Set Line %10101010101010101010
  602.       Ink 2,0 : Box XS+3,YS+2 To XE-3,YE-1
  603.       Set Line %111111111111111111111
  604.    End If 
  605.    
  606.    If R=1
  607.       Gr Writing 2
  608.       Bar XS,YS To XE,YE
  609.       Gr Writing 0
  610.    End If 
  611.    
  612.    
  613.    XS=Val(OKNO$(AKTYWNE_OKNO,0))
  614.    YS=Val(OKNO$(AKTYWNE_OKNO,1))
  615.    XE=Val(OKNO$(AKTYWNE_OKNO,2))
  616.    YE=Val(OKNO$(AKTYWNE_OKNO,3))
  617.    
  618.    
  619. End Proc
  620. Procedure ZAMKNIJ_OKNO[N]
  621.    If ILE_OKIEN=1
  622.       Cls 0
  623.       Pop Proc
  624.    End If 
  625.    If OKNO$(N,6)=Chr$(255)
  626.       _ERROR[1]
  627.    End If 
  628.    If N>ILE_OKIEN
  629.       _ERROR[2]
  630.    End If 
  631.    If N<=ILE_OKIEN
  632.       OKNO$(N,6)=Chr$(255)
  633.       Dec AKTYWNE_OKNO
  634.       PRZERYSUJ
  635.    End If 
  636. End Proc
  637. Procedure REQUESTER[TITLE$,NIC$,OPT$]
  638.    Dim OPT$(10),TR$(10)
  639.    K=1
  640.    For A=1 To Len(OPT$)
  641.       If Mid$(OPT$,A,1)="|"
  642.          Inc K
  643.       Else 
  644.          OPT$(K)=OPT$(K)+Mid$(OPT$,A,1)
  645.       End If 
  646.    Next 
  647.    P=1
  648.    For Q=1 To Len(NIC$)
  649.       If Mid$(NIC$,Q,1)="|"
  650.          Inc P
  651.       Else 
  652.          TR$(P)=TR$(P)+Mid$(NIC$,Q,1)
  653.       End If 
  654.    Next 
  655.    YY=40+P*10
  656.    For S=1 To K
  657.       If Len(TR$(S))>Len(TR$(S))
  658.          XX=Len(TR$(S))
  659.       End If 
  660.    Next 
  661.  
  662.    XX=100+XX*10
  663.  
  664.    OTW�RZ_OKNO["0","0",Str$(XX),Str$(YY),"0","1",TITLE$]
  665.    Ink 1
  666.    Bar Val(OKNO$(AKTYWNE_OKNO,0))+4,Val(OKNO$(AKTYWNE_OKNO,1))+11 To Val(OKNO$(AKTYWNE_OKNO,2))-18,Val(OKNO$(AKTYWNE_OKNO,3))-2
  667.    Set Pattern 2
  668.    Ink 0
  669.    Bar Val(OKNO$(AKTYWNE_OKNO,0))+4,Val(OKNO$(AKTYWNE_OKNO,1))+11 To Val(OKNO$(AKTYWNE_OKNO,2))-18,Val(OKNO$(AKTYWNE_OKNO,3))-2
  670.    Set Pattern 0
  671.    
  672. End Proc